'\" te
.\" Copyright (c) 2008, Sun Microsystems Inc. All Rights Reserved.
.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License").  You may not use this file except in compliance with the License.
.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing.  See the License for the specific language governing permissions and limitations under the License.
.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE.  If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
.TH IT_CONFIG_LOAD 3ISCSIT "Oct 1, 2008"
.SH NAME
it_config_load, it_config_commit, it_config_setprop, it_config_free \- set and
retrieve configuration data for the iSCSI Target Port Provider
.SH SYNOPSIS
.LP
.nf
cc [ \fIflag\fR\&.\|.\|. ] \fIfile\fR\&.\|.\|. \fB-liscsit\fR [ \fIlibrary\fR\&.\|.\|. ]
#include <libiscsit.h>

\fBint\fR \fBit_config_load\fR(\fBit_config_t **\fR\fIcfg\fR);
.fi

.LP
.nf
\fBint\fR \fBit_config_commit\fR(\fBit_config_t *\fR\fIcfg\fR);
.fi

.LP
.nf
\fBint\fR \fBit_config_setprop\fR(\fBit_config_t *\fR\fIcfg\fR, \fBnvlist_t *\fR\fIproplist\fR,
     \fBnvlist_t **\fR\fIerrlist\fR);
.fi

.LP
.nf
\fBvoid\fR \fBit_config_free\fR(\fBit_config_t *\fR\fIcfg\fR);
.fi

.SH PARAMETERS
.sp
.ne 2
.na
\fB\fIcfg\fR\fR
.ad
.RS 12n
a pointer to the iSCSI configuration structure
.RE

.sp
.ne 2
.na
\fB\fIproplist\fR\fR
.ad
.RS 12n
a pointer to an \fBnvlist_t\fR containing the global properties to be set
.RE

.sp
.ne 2
.na
\fB\fIerrlist\fR\fR
.ad
.RS 12n
an optional pointer to an \fBnvlist_t\fR that will be used to store specific
errors (if any) when validating global properties
.RE

.SH DESCRIPTION
.sp
.LP
The \fBit_config_load()\fR function allocates and creates an \fBit_config_t\fR
structure representing the current iSCSI configuration. This structure is
compiled using the "provider" data returned by
\fBstmfGetProviderData\fR(3STMF). If there is no provider data associated with
iscsit, the \fBit_config_t\fR structure is set to a default configuration.
.sp
.LP
The \fBit_config_commit()\fR function informs the iscsit service that the
configuration has changed and commits the new configuration to the persistent
store by calling \fBstmfSetProviderData\fR(3STMF). This function can be called
multiple times during a configuration sequence, if necessary.
.sp
.LP
The \fBit_config_setprop()\fR function validates the provided property list and
sets the global properties for iSCSI Target. If \fIerrlist\fR is not
\fINULL\fR, this function returns detailed errors for each property that
failed. The format for \fIerrorlist\fR is \fIkey\fR = \fIproperty\fR,
\fIvalue\fR = \fIerror\fR string.
.sp
.LP
The \fBit_config_free()\fR function frees resources associated with the
\fBit_config_t\fR structure.
.sp
.LP
Global nvlist properties are as follows:
.sp

.sp
.TS
c c c
l l l .
\fBnvlist\fR Key	Type	Valid Values
_
\fBalias\fR	\fBstring\fR	any string
\fBauth\fR	\fBstring\fR	\fBradius\fR, \fBchap\fR, or \fBnone\fR
\fBisns\fR	\fBboolean\fR	\fBB_TRUE\fR, \fBB_FALSE\fR
\fBisnsserver\fR	\fBstring\fR array	T{
Array of portal specifications of the form IPaddress:port.  Port is optional; if not specified, the default iSNS port number of 3205 will be used.  IPv6 addresses should be enclosed in square brackets '[' ']'.  If "none" is specified, all defined iSNS servers will be removed from the configuration.
T}
\fBradiusserver\fR	\fBstring\fR	T{
IPaddress:port specification as described for 'isnsserver'
T}
\fBradiussecret\fR	\fBstring\fR	T{
string of at least 12 characters but not more than 255 characters.  secret will be base64 encoded when stored.
T}
.TE

.SH RETURN VALUES
.sp
.LP
The \fBit_config_load()\fR, \fBit_config_commit()\fR, and
\fBit_config_setprop()\fR functions return 0 on success and an error value on
failure.
.SH ERRORS
.sp
.LP
The \fBit_config_load()\fR, \fBit_config_commit()\fR, and
\fBit_config_setprop()\fR functions will fail if:
.sp
.ne 2
.na
\fB\fBEINVAL\fR\fR
.ad
.RS 10n
A parameter or property is invalid.
.RE

.sp
.ne 2
.na
\fB\fBENOMEM\fR\fR
.ad
.RS 10n
Resources could not be allocated.
.RE

.sp
.LP
The \fBit_config_commit()\fR function will also fail if:
.sp
.ne 2
.na
\fB\fBSTMF_ERROR_SERVICE_DATA_VERSION\fR\fR
.ad
.sp .6
.RS 4n
The configuration was updated by another client. See
\fBstmfSetProviderData\fR(3STMF).
.RE

.SH ATTRIBUTES
.sp
.LP
See \fBattributes\fR(7) for descriptions of the following attributes:
.sp

.sp
.TS
box;
c | c
l | l .
ATTRIBUTE TYPE	ATTRIBUTE VALUE
_
Interface Stability	Committed
_
MT-Level	MT-Safe
.TE

.SH SEE ALSO
.sp
.LP
.BR it_ini_create (3ISCSIT),
.BR it_portal_create (3ISCSIT),
.BR it_tgt_create (3ISCSIT),
.BR it_tpg_create (3ISCSIT),
.BR libiscsit (3LIB),
.BR libnvpair (3LIB),
.BR libstmf (3LIB),
.BR stmfGetProviderData (3STMF),
.BR stmfSetProviderData (3STMF),
.BR attributes (7)
